package com.administrator.scoreManageSys.service;

import com.alibaba.fastjson.JSONObject;

import javax.servlet.http.HttpServletResponse;

/**
 * @author zsh
 * @date 2022/04/06/ 11:20
 */
public interface OrganizationService {
    /**
     * 获取用户账户列表
     * @param pageNum 当前页
     * @param pageSize 页大小
     * @param roleId 角色id
     * @param phone 手机号
     * @param name 名称
     * @return 用户账户列表
     */
    JSONObject userAccountList(Integer pageNum, Integer pageSize, Long roleId, Long phone, String name);

    /**
     * 添加用户账号
     * @param userId 创建人
     * @param name 用户名称
     * @param phone 用户手机号
     * @param identity 用户身份  0:管理员 / 1:学生 /2:老师
     * @param roleId 用户角色id
     * @param sex 性别 1/2 男/女
     * @param classId 用户班级id
     * @param identityCard 用户身份证号
     * @param idEntityCardAddress 用户身份证地址
     * @param address 现居住地址
     * @param admissionTime 入学时间
     * @return 操作结果
     */
    JSONObject userAccountAdd(Long userId, String name, Long phone, Long identity, Long roleId, Long sex, Long classId, String identityCard, String idEntityCardAddress, String address, Long admissionTime);

    /**
     * 重置密保
     * @param id 用户id
     * @return 操作结果
     */
    JSONObject resetPasswordProtection(Long id);

    /**
     * 重置密码
     * @param id 用户id
     * @return 操作结果
     */
    JSONObject resetPassword(Long id);

    /**
     * 修改用户账号
     * @param name 用户姓名
     * @param phone 用户手机号
     * @param roleId 用户角色id
     * @param classId 用户班级id
     * @param address 现居住地址
     * @param id 用户id
     * @param oldClassId 原班级id
     * @param identity 用户身份  0:管理员 / 1:学生 /2:老师
     * @param sex 性别 1/2 男/女
     * @param identityCard 用户身份证号
     * @param idEntityCardAddress 用户身份证地址
     * @param admissionTime 入学时间
     * @return 操作结果
     */
    JSONObject userAccountUpdate(String name, Long phone, Long roleId, Long classId, String address, Long id, Long oldClassId, Long identity, Long sex, String identityCard, String idEntityCardAddress, Long admissionTime);

    /**
     * 导出用户信息
     * @param name 名称
     * @param phone 手机号
     * @param roleId 角色id
     * @param response response
     */
    void exportUserList(String name, Long phone, Long roleId, HttpServletResponse response);

    /**
     * 删除账户
     * @param id 账户id
     * @return 操作结果
     */
    JSONObject deleteAccount(Long id);

    /**
     * 获取用户详情信息
     * @param id 用户id
     * @return 详情信息
     */
    JSONObject getUserDetail(Long id);
}
